// **********************************************************************
//
// Copyright (c) 2003-2008 ZeroC, Inc. All rights reserved.
//
// This copy of Ice is licensed to you under the terms described in the
// ICE_LICENSE file included in this distribution.
//
// **********************************************************************

// Ice version 3.3.0
// Generated from file `Printer.ice'

#include "Printer.h"
#include <Ice/LocalException.h>
#include <Ice/ObjectFactory.h>
#include <Ice/BasicStream.h>
#include <IceUtil/Iterator.h>
#include <IceUtil/ScopedArray.h>

#ifndef ICE_IGNORE_VERSION
#   if ICE_INT_VERSION / 100 != 303
#       error Ice version mismatch!
#   endif
#   if ICE_INT_VERSION % 100 > 50
#       error Beta header file detected
#   endif
#   if ICE_INT_VERSION % 100 < 0
#       error Ice patch level mismatch!
#   endif
#endif

static const ::std::string __PPApp__Printer__NewBankAccountInfoServer_name = "NewBankAccountInfoServer";

static const ::std::string __PPApp__Printer__NewBankCongealThawServer_name = "NewBankCongealThawServer";

static const ::std::string __PPApp__Printer__NewBankUserMoneyquantumGet_name = "NewBankUserMoneyquantumGet";

static const ::std::string __PPApp__Printer__NewBankAddGoldTest_name = "NewBankAddGoldTest";

static const ::std::string __PPApp__Printer__NewBankServerActionB_name = "NewBankServerActionB";

static const ::std::string __PPApp__Printer__NewBankServerActionSequenceB_name = "NewBankServerActionSequenceB";

::Ice::Object* IceInternal::upCast(::PPApp::C* p) { return p; }
::IceProxy::Ice::Object* IceInternal::upCast(::IceProxy::PPApp::C* p) { return p; }

::Ice::Object* IceInternal::upCast(::PPApp::Printer* p) { return p; }
::IceProxy::Ice::Object* IceInternal::upCast(::IceProxy::PPApp::Printer* p) { return p; }

void
PPApp::__read(::IceInternal::BasicStream* __is, ::PPApp::CPrx& v)
{
    ::Ice::ObjectPrx proxy;
    __is->read(proxy);
    if(!proxy)
    {
        v = 0;
    }
    else
    {
        v = new ::IceProxy::PPApp::C;
        v->__copyFrom(proxy);
    }
}

void
PPApp::__read(::IceInternal::BasicStream* __is, ::PPApp::PrinterPrx& v)
{
    ::Ice::ObjectPrx proxy;
    __is->read(proxy);
    if(!proxy)
    {
        v = 0;
    }
    else
    {
        v = new ::IceProxy::PPApp::Printer;
        v->__copyFrom(proxy);
    }
}

void
PPApp::__writeStringDict(::IceInternal::BasicStream* __os, const ::PPApp::StringDict& v)
{
    __os->writeSize(::Ice::Int(v.size()));
    ::PPApp::StringDict::const_iterator p;
    for(p = v.begin(); p != v.end(); ++p)
    {
        __os->write(p->first);
        __os->write(p->second);
    }
}

void
PPApp::__readStringDict(::IceInternal::BasicStream* __is, ::PPApp::StringDict& v)
{
    ::Ice::Int sz;
    __is->readSize(sz);
    while(sz--)
    {
        ::std::pair<const  ::std::string, ::std::string> pair;
        __is->read(const_cast< ::std::string&>(pair.first));
        ::PPApp::StringDict::iterator __i = v.insert(v.end(), pair);
        __is->read(__i->second);
    }
}

void
PPApp::__writeResultA(::IceInternal::BasicStream* __os, const ::PPApp::ResultA& v)
{
    __os->writeSize(::Ice::Int(v.size()));
    ::PPApp::ResultA::const_iterator p;
    for(p = v.begin(); p != v.end(); ++p)
    {
        __os->write(p->first);
        __os->write(p->second);
    }
}

void
PPApp::__readResultA(::IceInternal::BasicStream* __is, ::PPApp::ResultA& v)
{
    ::Ice::Int sz;
    __is->readSize(sz);
    while(sz--)
    {
        ::std::pair<const  ::std::string, ::std::string> pair;
        __is->read(const_cast< ::std::string&>(pair.first));
        ::PPApp::ResultA::iterator __i = v.insert(v.end(), pair);
        __is->read(__i->second);
    }
}

void
PPApp::__writeResultB(::IceInternal::BasicStream* __os, const ::PPApp::ResultB& v)
{
    __os->writeSize(::Ice::Int(v.size()));
    ::PPApp::ResultB::const_iterator p;
    for(p = v.begin(); p != v.end(); ++p)
    {
        __os->write(p->first);
        ::PPApp::__writeResultA(__os, p->second);
    }
}

void
PPApp::__readResultB(::IceInternal::BasicStream* __is, ::PPApp::ResultB& v)
{
    ::Ice::Int sz;
    __is->readSize(sz);
    while(sz--)
    {
        ::std::pair<const  ::Ice::Int, ::PPApp::ResultA> pair;
        __is->read(const_cast< ::Ice::Int&>(pair.first));
        ::PPApp::ResultB::iterator __i = v.insert(v.end(), pair);
        ::PPApp::__readResultA(__is, __i->second);
    }
}

void
PPApp::__writeResultC(::IceInternal::BasicStream* __os, const ::PPApp::ResultC& v)
{
    __os->writeSize(::Ice::Int(v.size()));
    ::PPApp::ResultC::const_iterator p;
    for(p = v.begin(); p != v.end(); ++p)
    {
        __os->write(p->first);
        ::PPApp::__writeResultB(__os, p->second);
    }
}

void
PPApp::__readResultC(::IceInternal::BasicStream* __is, ::PPApp::ResultC& v)
{
    ::Ice::Int sz;
    __is->readSize(sz);
    while(sz--)
    {
        ::std::pair<const  ::std::string, ::PPApp::ResultB> pair;
        __is->read(const_cast< ::std::string&>(pair.first));
        ::PPApp::ResultC::iterator __i = v.insert(v.end(), pair);
        ::PPApp::__readResultB(__is, __i->second);
    }
}

void
PPApp::__writeSequenceResultB(::IceInternal::BasicStream* __os, const ::PPApp::ResultB* begin, const ::PPApp::ResultB* end)
{
    ::Ice::Int size = static_cast< ::Ice::Int>(end - begin);
    __os->writeSize(size);
    for(int i = 0; i < size; ++i)
    {
        ::PPApp::__writeResultB(__os, begin[i]);
    }
}

void
PPApp::__readSequenceResultB(::IceInternal::BasicStream* __is, ::PPApp::SequenceResultB& v)
{
    ::Ice::Int sz;
    __is->readSize(sz);
    __is->startSeq(sz, 1);
    v.resize(sz);
    for(int i = 0; i < sz; ++i)
    {
        ::PPApp::__readResultB(__is, v[i]);
        __is->checkSeq();
        __is->endElement();
    }
    __is->endSeq(sz);
}

bool
PPApp::Structure::operator==(const Structure& __rhs) const
{
    if(this == &__rhs)
    {
        return true;
    }
    if(name != __rhs.name)
    {
        return false;
    }
    if(value != __rhs.value)
    {
        return false;
    }
    return true;
}

bool
PPApp::Structure::operator<(const Structure& __rhs) const
{
    if(this == &__rhs)
    {
        return false;
    }
    if(name < __rhs.name)
    {
        return true;
    }
    else if(__rhs.name < name)
    {
        return false;
    }
    if(value < __rhs.value)
    {
        return true;
    }
    else if(__rhs.value < value)
    {
        return false;
    }
    return false;
}

void
PPApp::Structure::__write(::IceInternal::BasicStream* __os) const
{
    __os->write(name);
    ::PPApp::__writeStringDict(__os, value);
}

void
PPApp::Structure::__read(::IceInternal::BasicStream* __is)
{
    __is->read(name);
    ::PPApp::__readStringDict(__is, value);
}

void
PPApp::__writeStructureSeq(::IceInternal::BasicStream* __os, const ::PPApp::Structure* begin, const ::PPApp::Structure* end)
{
    ::Ice::Int size = static_cast< ::Ice::Int>(end - begin);
    __os->writeSize(size);
    for(int i = 0; i < size; ++i)
    {
        begin[i].__write(__os);
    }
}

void
PPApp::__readStructureSeq(::IceInternal::BasicStream* __is, ::PPApp::StructureSeq& v)
{
    ::Ice::Int sz;
    __is->readSize(sz);
    __is->startSeq(sz, 2);
    v.resize(sz);
    for(int i = 0; i < sz; ++i)
    {
        v[i].__read(__is);
        __is->checkSeq();
        __is->endElement();
    }
    __is->endSeq(sz);
}

const ::std::string&
IceProxy::PPApp::C::ice_staticId()
{
    return ::PPApp::C::ice_staticId();
}

::IceInternal::Handle< ::IceDelegateM::Ice::Object>
IceProxy::PPApp::C::__createDelegateM()
{
    return ::IceInternal::Handle< ::IceDelegateM::Ice::Object>(new ::IceDelegateM::PPApp::C);
}

::IceInternal::Handle< ::IceDelegateD::Ice::Object>
IceProxy::PPApp::C::__createDelegateD()
{
    return ::IceInternal::Handle< ::IceDelegateD::Ice::Object>(new ::IceDelegateD::PPApp::C);
}

::IceProxy::Ice::Object*
IceProxy::PPApp::C::__newInstance() const
{
    return new C;
}

::PPApp::ResultA
IceProxy::PPApp::Printer::NewBankAccountInfoServer(const ::std::string& userid, const ::Ice::Context* __ctx)
{
    int __cnt = 0;
    while(true)
    {
        ::IceInternal::Handle< ::IceDelegate::Ice::Object> __delBase;
        try
        {
            __checkTwowayOnly(__PPApp__Printer__NewBankAccountInfoServer_name);
            __delBase = __getDelegate(false);
            ::IceDelegate::PPApp::Printer* __del = dynamic_cast< ::IceDelegate::PPApp::Printer*>(__delBase.get());
            return __del->NewBankAccountInfoServer(userid, __ctx);
        }
        catch(const ::IceInternal::LocalExceptionWrapper& __ex)
        {
            __handleExceptionWrapper(__delBase, __ex, 0);
        }
        catch(const ::Ice::LocalException& __ex)
        {
            __handleException(__delBase, __ex, 0, __cnt);
        }
    }
}

::PPApp::ResultA
IceProxy::PPApp::Printer::NewBankCongealThawServer(const ::std::string& userid, ::Ice::Short action, const ::Ice::Context* __ctx)
{
    int __cnt = 0;
    while(true)
    {
        ::IceInternal::Handle< ::IceDelegate::Ice::Object> __delBase;
        try
        {
            __checkTwowayOnly(__PPApp__Printer__NewBankCongealThawServer_name);
            __delBase = __getDelegate(false);
            ::IceDelegate::PPApp::Printer* __del = dynamic_cast< ::IceDelegate::PPApp::Printer*>(__delBase.get());
            return __del->NewBankCongealThawServer(userid, action, __ctx);
        }
        catch(const ::IceInternal::LocalExceptionWrapper& __ex)
        {
            __handleExceptionWrapper(__delBase, __ex, 0);
        }
        catch(const ::Ice::LocalException& __ex)
        {
            __handleException(__delBase, __ex, 0, __cnt);
        }
    }
}

::PPApp::ResultA
IceProxy::PPApp::Printer::NewBankUserMoneyquantumGet(const ::std::string& userid, const ::Ice::Context* __ctx)
{
    int __cnt = 0;
    while(true)
    {
        ::IceInternal::Handle< ::IceDelegate::Ice::Object> __delBase;
        try
        {
            __checkTwowayOnly(__PPApp__Printer__NewBankUserMoneyquantumGet_name);
            __delBase = __getDelegate(false);
            ::IceDelegate::PPApp::Printer* __del = dynamic_cast< ::IceDelegate::PPApp::Printer*>(__delBase.get());
            return __del->NewBankUserMoneyquantumGet(userid, __ctx);
        }
        catch(const ::IceInternal::LocalExceptionWrapper& __ex)
        {
            __handleExceptionWrapper(__delBase, __ex, 0);
        }
        catch(const ::Ice::LocalException& __ex)
        {
            __handleException(__delBase, __ex, 0, __cnt);
        }
    }
}

void
IceProxy::PPApp::Printer::NewBankAddGoldTest(const ::std::string& userid, ::Ice::Int gold, const ::std::string& frombanknum, const ::std::string& objid, const ::Ice::Context* __ctx)
{
    int __cnt = 0;
    while(true)
    {
        ::IceInternal::Handle< ::IceDelegate::Ice::Object> __delBase;
        try
        {
            __delBase = __getDelegate(false);
            ::IceDelegate::PPApp::Printer* __del = dynamic_cast< ::IceDelegate::PPApp::Printer*>(__delBase.get());
            __del->NewBankAddGoldTest(userid, gold, frombanknum, objid, __ctx);
            return;
        }
        catch(const ::IceInternal::LocalExceptionWrapper& __ex)
        {
            __handleExceptionWrapper(__delBase, __ex, 0);
        }
        catch(const ::Ice::LocalException& __ex)
        {
            __handleException(__delBase, __ex, 0, __cnt);
        }
    }
}

::PPApp::ResultC
IceProxy::PPApp::Printer::NewBankServerActionB(const ::PPApp::ResultB& InputArray, const ::std::string& frombanknum, const ::Ice::Context* __ctx)
{
    int __cnt = 0;
    while(true)
    {
        ::IceInternal::Handle< ::IceDelegate::Ice::Object> __delBase;
        try
        {
            __checkTwowayOnly(__PPApp__Printer__NewBankServerActionB_name);
            __delBase = __getDelegate(false);
            ::IceDelegate::PPApp::Printer* __del = dynamic_cast< ::IceDelegate::PPApp::Printer*>(__delBase.get());
            return __del->NewBankServerActionB(InputArray, frombanknum, __ctx);
        }
        catch(const ::IceInternal::LocalExceptionWrapper& __ex)
        {
            __handleExceptionWrapper(__delBase, __ex, 0);
        }
        catch(const ::Ice::LocalException& __ex)
        {
            __handleException(__delBase, __ex, 0, __cnt);
        }
    }
}

::PPApp::ResultC
IceProxy::PPApp::Printer::NewBankServerActionSequenceB(const ::PPApp::SequenceResultB& SequenceInputArray, const ::std::string& frombanknum, const ::Ice::Context* __ctx)
{
    int __cnt = 0;
    while(true)
    {
        ::IceInternal::Handle< ::IceDelegate::Ice::Object> __delBase;
        try
        {
            __checkTwowayOnly(__PPApp__Printer__NewBankServerActionSequenceB_name);
            __delBase = __getDelegate(false);
            ::IceDelegate::PPApp::Printer* __del = dynamic_cast< ::IceDelegate::PPApp::Printer*>(__delBase.get());
            return __del->NewBankServerActionSequenceB(SequenceInputArray, frombanknum, __ctx);
        }
        catch(const ::IceInternal::LocalExceptionWrapper& __ex)
        {
            __handleExceptionWrapper(__delBase, __ex, 0);
        }
        catch(const ::Ice::LocalException& __ex)
        {
            __handleException(__delBase, __ex, 0, __cnt);
        }
    }
}

const ::std::string&
IceProxy::PPApp::Printer::ice_staticId()
{
    return ::PPApp::Printer::ice_staticId();
}

::IceInternal::Handle< ::IceDelegateM::Ice::Object>
IceProxy::PPApp::Printer::__createDelegateM()
{
    return ::IceInternal::Handle< ::IceDelegateM::Ice::Object>(new ::IceDelegateM::PPApp::Printer);
}

::IceInternal::Handle< ::IceDelegateD::Ice::Object>
IceProxy::PPApp::Printer::__createDelegateD()
{
    return ::IceInternal::Handle< ::IceDelegateD::Ice::Object>(new ::IceDelegateD::PPApp::Printer);
}

::IceProxy::Ice::Object*
IceProxy::PPApp::Printer::__newInstance() const
{
    return new Printer;
}

::PPApp::ResultA
IceDelegateM::PPApp::Printer::NewBankAccountInfoServer(const ::std::string& userid, const ::Ice::Context* __context)
{
    ::IceInternal::Outgoing __og(__handler.get(), __PPApp__Printer__NewBankAccountInfoServer_name, ::Ice::Normal, __context);
    try
    {
        ::IceInternal::BasicStream* __os = __og.os();
        __os->write(userid);
    }
    catch(const ::Ice::LocalException& __ex)
    {
        __og.abort(__ex);
    }
    bool __ok = __og.invoke();
    try
    {
        if(!__ok)
        {
            try
            {
                __og.throwUserException();
            }
            catch(const ::Ice::UserException& __ex)
            {
                ::Ice::UnknownUserException __uue(__FILE__, __LINE__, __ex.ice_name());
                throw __uue;
            }
        }
        ::PPApp::ResultA __ret;
        ::IceInternal::BasicStream* __is = __og.is();
        __is->startReadEncaps();
        ::PPApp::__readResultA(__is, __ret);
        __is->endReadEncaps();
        return __ret;
    }
    catch(const ::Ice::LocalException& __ex)
    {
        throw ::IceInternal::LocalExceptionWrapper(__ex, false);
    }
}

::PPApp::ResultA
IceDelegateM::PPApp::Printer::NewBankCongealThawServer(const ::std::string& userid, ::Ice::Short action, const ::Ice::Context* __context)
{
    ::IceInternal::Outgoing __og(__handler.get(), __PPApp__Printer__NewBankCongealThawServer_name, ::Ice::Normal, __context);
    try
    {
        ::IceInternal::BasicStream* __os = __og.os();
        __os->write(userid);
        __os->write(action);
    }
    catch(const ::Ice::LocalException& __ex)
    {
        __og.abort(__ex);
    }
    bool __ok = __og.invoke();
    try
    {
        if(!__ok)
        {
            try
            {
                __og.throwUserException();
            }
            catch(const ::Ice::UserException& __ex)
            {
                ::Ice::UnknownUserException __uue(__FILE__, __LINE__, __ex.ice_name());
                throw __uue;
            }
        }
        ::PPApp::ResultA __ret;
        ::IceInternal::BasicStream* __is = __og.is();
        __is->startReadEncaps();
        ::PPApp::__readResultA(__is, __ret);
        __is->endReadEncaps();
        return __ret;
    }
    catch(const ::Ice::LocalException& __ex)
    {
        throw ::IceInternal::LocalExceptionWrapper(__ex, false);
    }
}

::PPApp::ResultA
IceDelegateM::PPApp::Printer::NewBankUserMoneyquantumGet(const ::std::string& userid, const ::Ice::Context* __context)
{
    ::IceInternal::Outgoing __og(__handler.get(), __PPApp__Printer__NewBankUserMoneyquantumGet_name, ::Ice::Normal, __context);
    try
    {
        ::IceInternal::BasicStream* __os = __og.os();
        __os->write(userid);
    }
    catch(const ::Ice::LocalException& __ex)
    {
        __og.abort(__ex);
    }
    bool __ok = __og.invoke();
    try
    {
        if(!__ok)
        {
            try
            {
                __og.throwUserException();
            }
            catch(const ::Ice::UserException& __ex)
            {
                ::Ice::UnknownUserException __uue(__FILE__, __LINE__, __ex.ice_name());
                throw __uue;
            }
        }
        ::PPApp::ResultA __ret;
        ::IceInternal::BasicStream* __is = __og.is();
        __is->startReadEncaps();
        ::PPApp::__readResultA(__is, __ret);
        __is->endReadEncaps();
        return __ret;
    }
    catch(const ::Ice::LocalException& __ex)
    {
        throw ::IceInternal::LocalExceptionWrapper(__ex, false);
    }
}

void
IceDelegateM::PPApp::Printer::NewBankAddGoldTest(const ::std::string& userid, ::Ice::Int gold, const ::std::string& frombanknum, const ::std::string& objid, const ::Ice::Context* __context)
{
    ::IceInternal::Outgoing __og(__handler.get(), __PPApp__Printer__NewBankAddGoldTest_name, ::Ice::Normal, __context);
    try
    {
        ::IceInternal::BasicStream* __os = __og.os();
        __os->write(userid);
        __os->write(gold);
        __os->write(frombanknum);
        __os->write(objid);
    }
    catch(const ::Ice::LocalException& __ex)
    {
        __og.abort(__ex);
    }
    bool __ok = __og.invoke();
    if(!__og.is()->b.empty())
    {
        try
        {
            if(!__ok)
            {
                try
                {
                    __og.throwUserException();
                }
                catch(const ::Ice::UserException& __ex)
                {
                    ::Ice::UnknownUserException __uue(__FILE__, __LINE__, __ex.ice_name());
                    throw __uue;
                }
            }
            __og.is()->skipEmptyEncaps();
        }
        catch(const ::Ice::LocalException& __ex)
        {
            throw ::IceInternal::LocalExceptionWrapper(__ex, false);
        }
    }
}

::PPApp::ResultC
IceDelegateM::PPApp::Printer::NewBankServerActionB(const ::PPApp::ResultB& InputArray, const ::std::string& frombanknum, const ::Ice::Context* __context)
{
    ::IceInternal::Outgoing __og(__handler.get(), __PPApp__Printer__NewBankServerActionB_name, ::Ice::Normal, __context);
    try
    {
        ::IceInternal::BasicStream* __os = __og.os();
        ::PPApp::__writeResultB(__os, InputArray);
        __os->write(frombanknum);
    }
    catch(const ::Ice::LocalException& __ex)
    {
        __og.abort(__ex);
    }
    bool __ok = __og.invoke();
    try
    {
        if(!__ok)
        {
            try
            {
                __og.throwUserException();
            }
            catch(const ::Ice::UserException& __ex)
            {
                ::Ice::UnknownUserException __uue(__FILE__, __LINE__, __ex.ice_name());
                throw __uue;
            }
        }
        ::PPApp::ResultC __ret;
        ::IceInternal::BasicStream* __is = __og.is();
        __is->startReadEncaps();
        ::PPApp::__readResultC(__is, __ret);
        __is->endReadEncaps();
        return __ret;
    }
    catch(const ::Ice::LocalException& __ex)
    {
        throw ::IceInternal::LocalExceptionWrapper(__ex, false);
    }
}

::PPApp::ResultC
IceDelegateM::PPApp::Printer::NewBankServerActionSequenceB(const ::PPApp::SequenceResultB& SequenceInputArray, const ::std::string& frombanknum, const ::Ice::Context* __context)
{
    ::IceInternal::Outgoing __og(__handler.get(), __PPApp__Printer__NewBankServerActionSequenceB_name, ::Ice::Normal, __context);
    try
    {
        ::IceInternal::BasicStream* __os = __og.os();
        if(SequenceInputArray.size() == 0)
        {
            __os->writeSize(0);
        }
        else
        {
            ::PPApp::__writeSequenceResultB(__os, &SequenceInputArray[0], &SequenceInputArray[0] + SequenceInputArray.size());
        }
        __os->write(frombanknum);
    }
    catch(const ::Ice::LocalException& __ex)
    {
        __og.abort(__ex);
    }
    bool __ok = __og.invoke();
    try
    {
        if(!__ok)
        {
            try
            {
                __og.throwUserException();
            }
            catch(const ::Ice::UserException& __ex)
            {
                ::Ice::UnknownUserException __uue(__FILE__, __LINE__, __ex.ice_name());
                throw __uue;
            }
        }
        ::PPApp::ResultC __ret;
        ::IceInternal::BasicStream* __is = __og.is();
        __is->startReadEncaps();
        ::PPApp::__readResultC(__is, __ret);
        __is->endReadEncaps();
        return __ret;
    }
    catch(const ::Ice::LocalException& __ex)
    {
        throw ::IceInternal::LocalExceptionWrapper(__ex, false);
    }
}

::PPApp::ResultA
IceDelegateD::PPApp::Printer::NewBankAccountInfoServer(const ::std::string& userid, const ::Ice::Context* __context)
{
    class _DirectI : public ::IceInternal::Direct
    {
    public:

        _DirectI(::PPApp::ResultA& __result, const ::std::string& userid, const ::Ice::Current& __current) : 
            ::IceInternal::Direct(__current),
            _result(__result),
            _m_userid(userid)
        {
        }
        
        virtual ::Ice::DispatchStatus
        run(::Ice::Object* object)
        {
            ::PPApp::Printer* servant = dynamic_cast< ::PPApp::Printer*>(object);
            if(!servant)
            {
                throw ::Ice::OperationNotExistException(__FILE__, __LINE__, _current.id, _current.facet, _current.operation);
            }
            _result = servant->NewBankAccountInfoServer(_m_userid, _current);
            return ::Ice::DispatchOK;
        }
        
    private:
        
        ::PPApp::ResultA& _result;
        const ::std::string& _m_userid;
    };
    
    ::Ice::Current __current;
    __initCurrent(__current, __PPApp__Printer__NewBankAccountInfoServer_name, ::Ice::Normal, __context);
    ::PPApp::ResultA __result;
    try
    {
        _DirectI __direct(__result, userid, __current);
        try
        {
            __direct.servant()->__collocDispatch(__direct);
        }
        catch(...)
        {
            __direct.destroy();
            throw;
        }
        __direct.destroy();
    }
    catch(const ::Ice::SystemException&)
    {
        throw;
    }
    catch(const ::IceInternal::LocalExceptionWrapper&)
    {
        throw;
    }
    catch(const ::std::exception& __ex)
    {
        ::IceInternal::LocalExceptionWrapper::throwWrapper(__ex);
    }
    catch(...)
    {
        throw ::IceInternal::LocalExceptionWrapper(::Ice::UnknownException(__FILE__, __LINE__, "unknown c++ exception"), false);
    }
    return __result;
}

::PPApp::ResultA
IceDelegateD::PPApp::Printer::NewBankCongealThawServer(const ::std::string& userid, ::Ice::Short action, const ::Ice::Context* __context)
{
    class _DirectI : public ::IceInternal::Direct
    {
    public:

        _DirectI(::PPApp::ResultA& __result, const ::std::string& userid, ::Ice::Short action, const ::Ice::Current& __current) : 
            ::IceInternal::Direct(__current),
            _result(__result),
            _m_userid(userid),
            _m_action(action)
        {
        }
        
        virtual ::Ice::DispatchStatus
        run(::Ice::Object* object)
        {
            ::PPApp::Printer* servant = dynamic_cast< ::PPApp::Printer*>(object);
            if(!servant)
            {
                throw ::Ice::OperationNotExistException(__FILE__, __LINE__, _current.id, _current.facet, _current.operation);
            }
            _result = servant->NewBankCongealThawServer(_m_userid, _m_action, _current);
            return ::Ice::DispatchOK;
        }
        
    private:
        
        ::PPApp::ResultA& _result;
        const ::std::string& _m_userid;
        ::Ice::Short _m_action;
    };
    
    ::Ice::Current __current;
    __initCurrent(__current, __PPApp__Printer__NewBankCongealThawServer_name, ::Ice::Normal, __context);
    ::PPApp::ResultA __result;
    try
    {
        _DirectI __direct(__result, userid, action, __current);
        try
        {
            __direct.servant()->__collocDispatch(__direct);
        }
        catch(...)
        {
            __direct.destroy();
            throw;
        }
        __direct.destroy();
    }
    catch(const ::Ice::SystemException&)
    {
        throw;
    }
    catch(const ::IceInternal::LocalExceptionWrapper&)
    {
        throw;
    }
    catch(const ::std::exception& __ex)
    {
        ::IceInternal::LocalExceptionWrapper::throwWrapper(__ex);
    }
    catch(...)
    {
        throw ::IceInternal::LocalExceptionWrapper(::Ice::UnknownException(__FILE__, __LINE__, "unknown c++ exception"), false);
    }
    return __result;
}

::PPApp::ResultA
IceDelegateD::PPApp::Printer::NewBankUserMoneyquantumGet(const ::std::string& userid, const ::Ice::Context* __context)
{
    class _DirectI : public ::IceInternal::Direct
    {
    public:

        _DirectI(::PPApp::ResultA& __result, const ::std::string& userid, const ::Ice::Current& __current) : 
            ::IceInternal::Direct(__current),
            _result(__result),
            _m_userid(userid)
        {
        }
        
        virtual ::Ice::DispatchStatus
        run(::Ice::Object* object)
        {
            ::PPApp::Printer* servant = dynamic_cast< ::PPApp::Printer*>(object);
            if(!servant)
            {
                throw ::Ice::OperationNotExistException(__FILE__, __LINE__, _current.id, _current.facet, _current.operation);
            }
            _result = servant->NewBankUserMoneyquantumGet(_m_userid, _current);
            return ::Ice::DispatchOK;
        }
        
    private:
        
        ::PPApp::ResultA& _result;
        const ::std::string& _m_userid;
    };
    
    ::Ice::Current __current;
    __initCurrent(__current, __PPApp__Printer__NewBankUserMoneyquantumGet_name, ::Ice::Normal, __context);
    ::PPApp::ResultA __result;
    try
    {
        _DirectI __direct(__result, userid, __current);
        try
        {
            __direct.servant()->__collocDispatch(__direct);
        }
        catch(...)
        {
            __direct.destroy();
            throw;
        }
        __direct.destroy();
    }
    catch(const ::Ice::SystemException&)
    {
        throw;
    }
    catch(const ::IceInternal::LocalExceptionWrapper&)
    {
        throw;
    }
    catch(const ::std::exception& __ex)
    {
        ::IceInternal::LocalExceptionWrapper::throwWrapper(__ex);
    }
    catch(...)
    {
        throw ::IceInternal::LocalExceptionWrapper(::Ice::UnknownException(__FILE__, __LINE__, "unknown c++ exception"), false);
    }
    return __result;
}

void
IceDelegateD::PPApp::Printer::NewBankAddGoldTest(const ::std::string& userid, ::Ice::Int gold, const ::std::string& frombanknum, const ::std::string& objid, const ::Ice::Context* __context)
{
    class _DirectI : public ::IceInternal::Direct
    {
    public:

        _DirectI(const ::std::string& userid, ::Ice::Int gold, const ::std::string& frombanknum, const ::std::string& objid, const ::Ice::Current& __current) : 
            ::IceInternal::Direct(__current),
            _m_userid(userid),
            _m_gold(gold),
            _m_frombanknum(frombanknum),
            _m_objid(objid)
        {
        }
        
        virtual ::Ice::DispatchStatus
        run(::Ice::Object* object)
        {
            ::PPApp::Printer* servant = dynamic_cast< ::PPApp::Printer*>(object);
            if(!servant)
            {
                throw ::Ice::OperationNotExistException(__FILE__, __LINE__, _current.id, _current.facet, _current.operation);
            }
            servant->NewBankAddGoldTest(_m_userid, _m_gold, _m_frombanknum, _m_objid, _current);
            return ::Ice::DispatchOK;
        }
        
    private:
        
        const ::std::string& _m_userid;
        ::Ice::Int _m_gold;
        const ::std::string& _m_frombanknum;
        const ::std::string& _m_objid;
    };
    
    ::Ice::Current __current;
    __initCurrent(__current, __PPApp__Printer__NewBankAddGoldTest_name, ::Ice::Normal, __context);
    try
    {
        _DirectI __direct(userid, gold, frombanknum, objid, __current);
        try
        {
            __direct.servant()->__collocDispatch(__direct);
        }
        catch(...)
        {
            __direct.destroy();
            throw;
        }
        __direct.destroy();
    }
    catch(const ::Ice::SystemException&)
    {
        throw;
    }
    catch(const ::IceInternal::LocalExceptionWrapper&)
    {
        throw;
    }
    catch(const ::std::exception& __ex)
    {
        ::IceInternal::LocalExceptionWrapper::throwWrapper(__ex);
    }
    catch(...)
    {
        throw ::IceInternal::LocalExceptionWrapper(::Ice::UnknownException(__FILE__, __LINE__, "unknown c++ exception"), false);
    }
}

::PPApp::ResultC
IceDelegateD::PPApp::Printer::NewBankServerActionB(const ::PPApp::ResultB& InputArray, const ::std::string& frombanknum, const ::Ice::Context* __context)
{
    class _DirectI : public ::IceInternal::Direct
    {
    public:

        _DirectI(::PPApp::ResultC& __result, const ::PPApp::ResultB& InputArray, const ::std::string& frombanknum, const ::Ice::Current& __current) : 
            ::IceInternal::Direct(__current),
            _result(__result),
            _m_InputArray(InputArray),
            _m_frombanknum(frombanknum)
        {
        }
        
        virtual ::Ice::DispatchStatus
        run(::Ice::Object* object)
        {
            ::PPApp::Printer* servant = dynamic_cast< ::PPApp::Printer*>(object);
            if(!servant)
            {
                throw ::Ice::OperationNotExistException(__FILE__, __LINE__, _current.id, _current.facet, _current.operation);
            }
            _result = servant->NewBankServerActionB(_m_InputArray, _m_frombanknum, _current);
            return ::Ice::DispatchOK;
        }
        
    private:
        
        ::PPApp::ResultC& _result;
        const ::PPApp::ResultB& _m_InputArray;
        const ::std::string& _m_frombanknum;
    };
    
    ::Ice::Current __current;
    __initCurrent(__current, __PPApp__Printer__NewBankServerActionB_name, ::Ice::Normal, __context);
    ::PPApp::ResultC __result;
    try
    {
        _DirectI __direct(__result, InputArray, frombanknum, __current);
        try
        {
            __direct.servant()->__collocDispatch(__direct);
        }
        catch(...)
        {
            __direct.destroy();
            throw;
        }
        __direct.destroy();
    }
    catch(const ::Ice::SystemException&)
    {
        throw;
    }
    catch(const ::IceInternal::LocalExceptionWrapper&)
    {
        throw;
    }
    catch(const ::std::exception& __ex)
    {
        ::IceInternal::LocalExceptionWrapper::throwWrapper(__ex);
    }
    catch(...)
    {
        throw ::IceInternal::LocalExceptionWrapper(::Ice::UnknownException(__FILE__, __LINE__, "unknown c++ exception"), false);
    }
    return __result;
}

::PPApp::ResultC
IceDelegateD::PPApp::Printer::NewBankServerActionSequenceB(const ::PPApp::SequenceResultB& SequenceInputArray, const ::std::string& frombanknum, const ::Ice::Context* __context)
{
    class _DirectI : public ::IceInternal::Direct
    {
    public:

        _DirectI(::PPApp::ResultC& __result, const ::PPApp::SequenceResultB& SequenceInputArray, const ::std::string& frombanknum, const ::Ice::Current& __current) : 
            ::IceInternal::Direct(__current),
            _result(__result),
            _m_SequenceInputArray(SequenceInputArray),
            _m_frombanknum(frombanknum)
        {
        }
        
        virtual ::Ice::DispatchStatus
        run(::Ice::Object* object)
        {
            ::PPApp::Printer* servant = dynamic_cast< ::PPApp::Printer*>(object);
            if(!servant)
            {
                throw ::Ice::OperationNotExistException(__FILE__, __LINE__, _current.id, _current.facet, _current.operation);
            }
            _result = servant->NewBankServerActionSequenceB(_m_SequenceInputArray, _m_frombanknum, _current);
            return ::Ice::DispatchOK;
        }
        
    private:
        
        ::PPApp::ResultC& _result;
        const ::PPApp::SequenceResultB& _m_SequenceInputArray;
        const ::std::string& _m_frombanknum;
    };
    
    ::Ice::Current __current;
    __initCurrent(__current, __PPApp__Printer__NewBankServerActionSequenceB_name, ::Ice::Normal, __context);
    ::PPApp::ResultC __result;
    try
    {
        _DirectI __direct(__result, SequenceInputArray, frombanknum, __current);
        try
        {
            __direct.servant()->__collocDispatch(__direct);
        }
        catch(...)
        {
            __direct.destroy();
            throw;
        }
        __direct.destroy();
    }
    catch(const ::Ice::SystemException&)
    {
        throw;
    }
    catch(const ::IceInternal::LocalExceptionWrapper&)
    {
        throw;
    }
    catch(const ::std::exception& __ex)
    {
        ::IceInternal::LocalExceptionWrapper::throwWrapper(__ex);
    }
    catch(...)
    {
        throw ::IceInternal::LocalExceptionWrapper(::Ice::UnknownException(__FILE__, __LINE__, "unknown c++ exception"), false);
    }
    return __result;
}

PPApp::C::C(const ::PPApp::Structure& __ice_s) :
    s(__ice_s)
{
}

::Ice::ObjectPtr
PPApp::C::ice_clone() const
{
    ::PPApp::CPtr __p = new ::PPApp::C(*this);
    return __p;
}

static const ::std::string __PPApp__C_ids[2] =
{
    "::Ice::Object",
    "::PPApp::C"
};

bool
PPApp::C::ice_isA(const ::std::string& _s, const ::Ice::Current&) const
{
    return ::std::binary_search(__PPApp__C_ids, __PPApp__C_ids + 2, _s);
}

::std::vector< ::std::string>
PPApp::C::ice_ids(const ::Ice::Current&) const
{
    return ::std::vector< ::std::string>(&__PPApp__C_ids[0], &__PPApp__C_ids[2]);
}

const ::std::string&
PPApp::C::ice_id(const ::Ice::Current&) const
{
    return __PPApp__C_ids[1];
}

const ::std::string&
PPApp::C::ice_staticId()
{
    return __PPApp__C_ids[1];
}

void
PPApp::C::__write(::IceInternal::BasicStream* __os) const
{
    __os->writeTypeId(ice_staticId());
    __os->startWriteSlice();
    s.__write(__os);
    __os->endWriteSlice();
#if defined(_MSC_VER) && (_MSC_VER < 1300) // VC++ 6 compiler bug
    Object::__write(__os);
#else
    ::Ice::Object::__write(__os);
#endif
}

void
PPApp::C::__read(::IceInternal::BasicStream* __is, bool __rid)
{
    if(__rid)
    {
        ::std::string myId;
        __is->readTypeId(myId);
    }
    __is->startReadSlice();
    s.__read(__is);
    __is->endReadSlice();
#if defined(_MSC_VER) && (_MSC_VER < 1300) // VC++ 6 compiler bug
    Object::__read(__is, true);
#else
    ::Ice::Object::__read(__is, true);
#endif
}

void
PPApp::C::__write(const ::Ice::OutputStreamPtr&) const
{
    Ice::MarshalException ex(__FILE__, __LINE__);
    ex.reason = "type PPApp::C was not generated with stream support";
    throw ex;
}

void
PPApp::C::__read(const ::Ice::InputStreamPtr&, bool)
{
    Ice::MarshalException ex(__FILE__, __LINE__);
    ex.reason = "type PPApp::C was not generated with stream support";
    throw ex;
}

class __F__PPApp__C : public ::Ice::ObjectFactory
{
public:

    virtual ::Ice::ObjectPtr
    create(const ::std::string& type)
    {
        assert(type == ::PPApp::C::ice_staticId());
        return new ::PPApp::C;
    }

    virtual void
    destroy()
    {
    }
};

static ::Ice::ObjectFactoryPtr __F__PPApp__C_Ptr = new __F__PPApp__C;

const ::Ice::ObjectFactoryPtr&
PPApp::C::ice_factory()
{
    return __F__PPApp__C_Ptr;
}

class __F__PPApp__C__Init
{
public:

    __F__PPApp__C__Init()
    {
        ::IceInternal::factoryTable->addObjectFactory(::PPApp::C::ice_staticId(), ::PPApp::C::ice_factory());
    }

    ~__F__PPApp__C__Init()
    {
        ::IceInternal::factoryTable->removeObjectFactory(::PPApp::C::ice_staticId());
    }
};

static __F__PPApp__C__Init __F__PPApp__C__i;

#ifdef __APPLE__
extern "C" { void __F__PPApp__C__initializer() {} }
#endif

void 
PPApp::__patch__CPtr(void* __addr, ::Ice::ObjectPtr& v)
{
    ::PPApp::CPtr* p = static_cast< ::PPApp::CPtr*>(__addr);
    assert(p);
    *p = ::PPApp::CPtr::dynamicCast(v);
    if(v && !*p)
    {
        IceInternal::Ex::throwUOE(::PPApp::C::ice_staticId(), v->ice_id());
    }
}

bool
PPApp::operator==(const ::PPApp::C& l, const ::PPApp::C& r)
{
    return static_cast<const ::Ice::Object&>(l) == static_cast<const ::Ice::Object&>(r);
}

bool
PPApp::operator<(const ::PPApp::C& l, const ::PPApp::C& r)
{
    return static_cast<const ::Ice::Object&>(l) < static_cast<const ::Ice::Object&>(r);
}

::Ice::ObjectPtr
PPApp::Printer::ice_clone() const
{
    throw ::Ice::CloneNotImplementedException(__FILE__, __LINE__);
    return 0; // to avoid a warning with some compilers
}

static const ::std::string __PPApp__Printer_ids[2] =
{
    "::Ice::Object",
    "::PPApp::Printer"
};

bool
PPApp::Printer::ice_isA(const ::std::string& _s, const ::Ice::Current&) const
{
    return ::std::binary_search(__PPApp__Printer_ids, __PPApp__Printer_ids + 2, _s);
}

::std::vector< ::std::string>
PPApp::Printer::ice_ids(const ::Ice::Current&) const
{
    return ::std::vector< ::std::string>(&__PPApp__Printer_ids[0], &__PPApp__Printer_ids[2]);
}

const ::std::string&
PPApp::Printer::ice_id(const ::Ice::Current&) const
{
    return __PPApp__Printer_ids[1];
}

const ::std::string&
PPApp::Printer::ice_staticId()
{
    return __PPApp__Printer_ids[1];
}

::Ice::DispatchStatus
PPApp::Printer::___NewBankAccountInfoServer(::IceInternal::Incoming& __inS, const ::Ice::Current& __current)
{
    __checkMode(::Ice::Normal, __current.mode);
    ::IceInternal::BasicStream* __is = __inS.is();
    __is->startReadEncaps();
    ::std::string userid;
    __is->read(userid);
    __is->endReadEncaps();
    ::IceInternal::BasicStream* __os = __inS.os();
    ::PPApp::ResultA __ret = NewBankAccountInfoServer(userid, __current);
    ::PPApp::__writeResultA(__os, __ret);
    return ::Ice::DispatchOK;
}

::Ice::DispatchStatus
PPApp::Printer::___NewBankCongealThawServer(::IceInternal::Incoming& __inS, const ::Ice::Current& __current)
{
    __checkMode(::Ice::Normal, __current.mode);
    ::IceInternal::BasicStream* __is = __inS.is();
    __is->startReadEncaps();
    ::std::string userid;
    ::Ice::Short action;
    __is->read(userid);
    __is->read(action);
    __is->endReadEncaps();
    ::IceInternal::BasicStream* __os = __inS.os();
    ::PPApp::ResultA __ret = NewBankCongealThawServer(userid, action, __current);
    ::PPApp::__writeResultA(__os, __ret);
    return ::Ice::DispatchOK;
}

::Ice::DispatchStatus
PPApp::Printer::___NewBankUserMoneyquantumGet(::IceInternal::Incoming& __inS, const ::Ice::Current& __current)
{
    __checkMode(::Ice::Normal, __current.mode);
    ::IceInternal::BasicStream* __is = __inS.is();
    __is->startReadEncaps();
    ::std::string userid;
    __is->read(userid);
    __is->endReadEncaps();
    ::IceInternal::BasicStream* __os = __inS.os();
    ::PPApp::ResultA __ret = NewBankUserMoneyquantumGet(userid, __current);
    ::PPApp::__writeResultA(__os, __ret);
    return ::Ice::DispatchOK;
}

::Ice::DispatchStatus
PPApp::Printer::___NewBankAddGoldTest(::IceInternal::Incoming& __inS, const ::Ice::Current& __current)
{
    __checkMode(::Ice::Normal, __current.mode);
    ::IceInternal::BasicStream* __is = __inS.is();
    __is->startReadEncaps();
    ::std::string userid;
    ::Ice::Int gold;
    ::std::string frombanknum;
    ::std::string objid;
    __is->read(userid);
    __is->read(gold);
    __is->read(frombanknum);
    __is->read(objid);
    __is->endReadEncaps();
    NewBankAddGoldTest(userid, gold, frombanknum, objid, __current);
    return ::Ice::DispatchOK;
}

::Ice::DispatchStatus
PPApp::Printer::___NewBankServerActionB(::IceInternal::Incoming& __inS, const ::Ice::Current& __current)
{
    __checkMode(::Ice::Normal, __current.mode);
    ::IceInternal::BasicStream* __is = __inS.is();
    __is->startReadEncaps();
    ::PPApp::ResultB InputArray;
    ::std::string frombanknum;
    ::PPApp::__readResultB(__is, InputArray);
    __is->read(frombanknum);
    __is->endReadEncaps();
    ::IceInternal::BasicStream* __os = __inS.os();
    ::PPApp::ResultC __ret = NewBankServerActionB(InputArray, frombanknum, __current);
    ::PPApp::__writeResultC(__os, __ret);
    return ::Ice::DispatchOK;
}

::Ice::DispatchStatus
PPApp::Printer::___NewBankServerActionSequenceB(::IceInternal::Incoming& __inS, const ::Ice::Current& __current)
{
    __checkMode(::Ice::Normal, __current.mode);
    ::IceInternal::BasicStream* __is = __inS.is();
    __is->startReadEncaps();
    ::PPApp::SequenceResultB SequenceInputArray;
    ::std::string frombanknum;
    ::PPApp::__readSequenceResultB(__is, SequenceInputArray);
    __is->read(frombanknum);
    __is->endReadEncaps();
    ::IceInternal::BasicStream* __os = __inS.os();
    ::PPApp::ResultC __ret = NewBankServerActionSequenceB(SequenceInputArray, frombanknum, __current);
    ::PPApp::__writeResultC(__os, __ret);
    return ::Ice::DispatchOK;
}

static ::std::string __PPApp__Printer_all[] =
{
    "NewBankAccountInfoServer",
    "NewBankAddGoldTest",
    "NewBankCongealThawServer",
    "NewBankServerActionB",
    "NewBankServerActionSequenceB",
    "NewBankUserMoneyquantumGet",
    "ice_id",
    "ice_ids",
    "ice_isA",
    "ice_ping"
};

::Ice::DispatchStatus
PPApp::Printer::__dispatch(::IceInternal::Incoming& in, const ::Ice::Current& current)
{
    ::std::pair< ::std::string*, ::std::string*> r = ::std::equal_range(__PPApp__Printer_all, __PPApp__Printer_all + 10, current.operation);
    if(r.first == r.second)
    {
        throw ::Ice::OperationNotExistException(__FILE__, __LINE__, current.id, current.facet, current.operation);
    }

    switch(r.first - __PPApp__Printer_all)
    {
        case 0:
        {
            return ___NewBankAccountInfoServer(in, current);
        }
        case 1:
        {
            return ___NewBankAddGoldTest(in, current);
        }
        case 2:
        {
            return ___NewBankCongealThawServer(in, current);
        }
        case 3:
        {
            return ___NewBankServerActionB(in, current);
        }
        case 4:
        {
            return ___NewBankServerActionSequenceB(in, current);
        }
        case 5:
        {
            return ___NewBankUserMoneyquantumGet(in, current);
        }
        case 6:
        {
            return ___ice_id(in, current);
        }
        case 7:
        {
            return ___ice_ids(in, current);
        }
        case 8:
        {
            return ___ice_isA(in, current);
        }
        case 9:
        {
            return ___ice_ping(in, current);
        }
    }

    assert(false);
    throw ::Ice::OperationNotExistException(__FILE__, __LINE__, current.id, current.facet, current.operation);
}

void
PPApp::Printer::__write(::IceInternal::BasicStream* __os) const
{
    __os->writeTypeId(ice_staticId());
    __os->startWriteSlice();
    __os->endWriteSlice();
#if defined(_MSC_VER) && (_MSC_VER < 1300) // VC++ 6 compiler bug
    Object::__write(__os);
#else
    ::Ice::Object::__write(__os);
#endif
}

void
PPApp::Printer::__read(::IceInternal::BasicStream* __is, bool __rid)
{
    if(__rid)
    {
        ::std::string myId;
        __is->readTypeId(myId);
    }
    __is->startReadSlice();
    __is->endReadSlice();
#if defined(_MSC_VER) && (_MSC_VER < 1300) // VC++ 6 compiler bug
    Object::__read(__is, true);
#else
    ::Ice::Object::__read(__is, true);
#endif
}

void
PPApp::Printer::__write(const ::Ice::OutputStreamPtr&) const
{
    Ice::MarshalException ex(__FILE__, __LINE__);
    ex.reason = "type PPApp::Printer was not generated with stream support";
    throw ex;
}

void
PPApp::Printer::__read(const ::Ice::InputStreamPtr&, bool)
{
    Ice::MarshalException ex(__FILE__, __LINE__);
    ex.reason = "type PPApp::Printer was not generated with stream support";
    throw ex;
}

void 
PPApp::__patch__PrinterPtr(void* __addr, ::Ice::ObjectPtr& v)
{
    ::PPApp::PrinterPtr* p = static_cast< ::PPApp::PrinterPtr*>(__addr);
    assert(p);
    *p = ::PPApp::PrinterPtr::dynamicCast(v);
    if(v && !*p)
    {
        IceInternal::Ex::throwUOE(::PPApp::Printer::ice_staticId(), v->ice_id());
    }
}

bool
PPApp::operator==(const ::PPApp::Printer& l, const ::PPApp::Printer& r)
{
    return static_cast<const ::Ice::Object&>(l) == static_cast<const ::Ice::Object&>(r);
}

bool
PPApp::operator<(const ::PPApp::Printer& l, const ::PPApp::Printer& r)
{
    return static_cast<const ::Ice::Object&>(l) < static_cast<const ::Ice::Object&>(r);
}
